// import com.alibaba.druid.sql.parser.*;

// import java.util.HashMap;
// import java.util.Map;

// import static com.alibaba.druid.sql.parser.CharTypes.isIdentifierChar;
// import static com.alibaba.druid.sql.parser.LayoutCharacters.EOI;
#pragma once
#include "../../../parser/Lexer.h"
#include <unordered_map>

class OracleLexer : virtual public Lexer
{
public:
  static BOOL_ptr __init;
  static BOOL_ptr init();

  static std::shared_ptr<std::unordered_map<std::string, Token_ptr>> map_;
  static Keywords_ptr DEFAULT_ORACLE_KEYWORDS;

  OracleLexer(char *input, int inputLength, BOOL_ptr skipComment);

  OracleLexer(string_ptr input);

  OracleLexer(string_ptr input, SQLParserFeature_list_ptr features);

  void scanVariable();
  void scanVariable_at();
  void scanComment();
  void scanNumber();
};
